package com.hzjy.api.beans;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.hzjy.common.annotation.Excel;

import java.util.Date;
import java.util.List;

/**
 * 产品对象 hzjy_product
 *
 * @author hzjy
 * @date 2020-08-24
 */
public class HzjyProduct {
    private static final long serialVersionUID = 1L;

    /**
     * 产品ID
     */
    private Long productId;

    /**
     * 产品名称
     */
    @Excel(name = "产品名称")
    private String productName;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    /**
     * 挂牌操作完成时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "挂牌操作完成时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date putawayTime;

    /**
     * 挂牌类型【0:作品挂牌，1：项目挂牌】
     */
    @Excel(name = "挂牌类型【0:作品挂牌，1：项目挂牌】")
    private Integer tradingType;

    /**
     * 项目类型【0：转让，1 许可】转让无期限，许可有期限
     */
    @Excel(name = "项目类型【0：转让，1 许可】转让无期限，许可有期限")
    private Integer termType;

    /**
     * 许可类型【0：专有许可，1：非专有许可】
     */
    @Excel(name = "许可类型【0：专有许可，1：非专有许可】")
    private Integer permissionType;

    /**
     * 授权类型【0：部分，1:全部】
     */
    @Excel(name = "授权类型【0：部分，1:全部】")
    private Long empowerType;

    /**
     * 作品封面图
     */
    @Excel(name = "作品封面图")
    private String coverImage;

    /**
     * 证明类型【0：个人，1：企业】
     */
    @Excel(name = "证明类型【0：个人，1：企业】")
    private Long proveType;

    /**
     * 著作权证书图
     */
    @Excel(name = "著作权证书图")
    private String authorCertificate;

    /**
     * 证明图片
     */
    @Excel(name = "证明图片")
    private String proveImage;

    /**
     * 挂牌协议ID
     */
    @Excel(name = "挂牌协议ID")
    private Integer agreementId;

    /**
     * 样片图片
     */
    @Excel(name = "样片图片")
    private String basicImage;

    /**
     * 样片类型1,图片，2视频，3音频
     */
    private Integer basicType;

    /**
     * 摘牌要求-文本
     */
    @Excel(name = "摘牌要求-文本")
    private String delistText;

    /**
     * 摘牌要求-图片
     */
    @Excel(name = "摘牌要求-图片")
    private String delistImage;

    /**
     * 查看次数
     */
    @Excel(name = "查看次数")
    private Integer seeNum;

    /**
     * 审核状态【0：草稿，1：被驳回，2：待审核，3：初审通过，4：终审通过，5，签订完成，6：部分交易完成，7：全部交易完成】
     */
    @Excel(name = "审核状态【0：草稿，1：被驳回，2：待审核，3：初审通过，4：终审通过，5，签订完成，6：部分交易完成，7：全部交易完成】")
    private Integer state;

    /**
     * 上架状态【0：下架，1：上架】
     */
    @Excel(name = "上架状态【0：下架，1：上架】")
    private Integer upState;

    /**
     * 最后一条审核记录的ID
     */
    @Excel(name = "最后一条审核记录的ID")
    private Long auditRecordId;

    /**
     * 所属用户ID
     */
    @Excel(name = "所属用户ID")
    private Integer userId;

    /**
     * 约定的挂牌期限(天)
     */
    @Excel(name = "约定的挂牌期限(天)")
    private Integer term;

    /**
     * 价格(分)(最终价格以双方商议为准，此价格仅展示)
     */
    @Excel(name = "价格(分)(最终价格以双方商议为准，此价格仅展示)")
    private Integer price;

    /**
     * 价格类型【0:输入的价格，1:面议】
     */
    @Excel(name = "价格类型【0:输入的价格，1:面议】")
    private Integer priceType;

    //项目信息表
    private HzjyProject hzjyProject;

    //作品信息表
    private HzjyWorks hzjyWorks;

    //著作权人
    private List<HzjyProjectAuthor> authorList;

    // 0 其他作品 1 挂牌 2 摘牌 作品
    private Integer myTradingTypeWork;

    //挂牌签约超时时间
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date signTimeOut;

    //可出售权利
    private String salability;

    //是否收藏
    private Boolean isCollection;

    //是否是用户挂牌作品
    private Boolean isTrading;

    public void setProductId(Long productId) {
        this.productId = productId;
    }

    public Long getProductId() {
        return productId;
    }

    public void setProductName(String productName) {
        this.productName = productName;
    }

    public String getProductName() {
        return productName;
    }

    public void setPutawayTime(Date putawayTime) {
        this.putawayTime = putawayTime;
    }

    public Date getPutawayTime() {
        return putawayTime;
    }

    public void setTradingType(Integer tradingType) {
        this.tradingType = tradingType;
    }

    public Integer getTradingType() {
        return tradingType;
    }

    public void setTermType(Integer termType) {
        this.termType = termType;
    }

    public Integer getTermType() {
        return termType;
    }

    public void setPermissionType(Integer permissionType) {
        this.permissionType = permissionType;
    }

    public Integer getPermissionType() {
        return permissionType;
    }

    public void setEmpowerType(Long empowerType) {
        this.empowerType = empowerType;
    }

    public Long getEmpowerType() {
        return empowerType;
    }

    public void setCoverImage(String coverImage) {
        this.coverImage = coverImage;
    }

    public String getCoverImage() {
        return coverImage;
    }

    public void setProveType(Long proveType) {
        this.proveType = proveType;
    }

    public Long getProveType() {
        return proveType;
    }

    public void setAuthorCertificate(String authorCertificate) {
        this.authorCertificate = authorCertificate;
    }

    public String getAuthorCertificate() {
        return authorCertificate;
    }

    public void setProveImage(String proveImage) {
        this.proveImage = proveImage;
    }

    public String getProveImage() {
        return proveImage;
    }

    public void setAgreementId(Integer agreementId) {
        this.agreementId = agreementId;
    }

    public Integer getAgreementId() {
        return agreementId;
    }

    public void setBasicImage(String basicImage) {
        this.basicImage = basicImage;
    }

    public String getBasicImage() {
        return basicImage;
    }

    public void setDelistText(String delistText) {
        this.delistText = delistText;
    }

    public String getDelistText() {
        return delistText;
    }

    public void setDelistImage(String delistImage) {
        this.delistImage = delistImage;
    }

    public String getDelistImage() {
        return delistImage;
    }

    public void setSeeNum(Integer seeNum) {
        this.seeNum = seeNum;
    }

    public Integer getSeeNum() {
        return seeNum;
    }

    public void setState(Integer state) {
        this.state = state;
    }

    public Integer getState() {
        return state;
    }

    public void setUpState(Integer upState) {
        this.upState = upState;
    }

    public Integer getUpState() {
        return upState;
    }

    public void setAuditRecordId(Long auditRecordId) {
        this.auditRecordId = auditRecordId;
    }

    public Long getAuditRecordId() {
        return auditRecordId;
    }

    public void setUserId(Integer userId) {
        this.userId = userId;
    }

    public Integer getUserId() {
        return userId;
    }

    public void setTerm(Integer term) {
        this.term = term;
    }

    public Integer getTerm() {
        return term;
    }

    public void setPrice(Integer price) {
        this.price = price;
    }

    public Integer getPrice() {
        return price;
    }

    public void setPriceType(Integer priceType) {
        this.priceType = priceType;
    }

    public Integer getPriceType() {
        return priceType;
    }

    public HzjyProject getHzjyProject() {
        return hzjyProject;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public void setHzjyProject(HzjyProject hzjyProject) {
        this.hzjyProject = hzjyProject;
    }

    public HzjyWorks getHzjyWorks() {
        return hzjyWorks;
    }

    public void setHzjyWorks(HzjyWorks hzjyWorks) {
        this.hzjyWorks = hzjyWorks;
    }

    public List<HzjyProjectAuthor> getAuthorList() {
        return authorList;
    }

    public void setAuthorList(List<HzjyProjectAuthor> authorList) {
        this.authorList = authorList;
    }

    public Date getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }

    public Integer getMyTradingTypeWork() {
        return myTradingTypeWork;
    }

    public void setMyTradingTypeWork(Integer myTradingTypeWork) {
        this.myTradingTypeWork = myTradingTypeWork;
    }

    public Date getSignTimeOut() {
        return signTimeOut;
    }

    public void setSignTimeOut(Date signTimeOut) {
        this.signTimeOut = signTimeOut;
    }

    public String getSalability() {
        return salability;
    }

    public void setSalability(String salability) {
        this.salability = salability;
    }

    public Boolean getIsCollection() {
        return isCollection;
    }

    public void setIsCollection(Boolean collection) {
        isCollection = collection;
    }

    public Boolean getIsTrading() {
        return isTrading;
    }

    public void setIsTrading(Boolean trading) {
        isTrading = trading;
    }

    public Integer getBasicType() {
        return basicType;
    }

    public void setBasicType(Integer basicType) {
        this.basicType = basicType;
    }
}
